package com.xmall.service;

import com.xmall.bean.table.Coupon;
import com.xmall.bean.vo.BaseCouponRespVO;
import com.xmall.bean.vo.CouponMallVO;
import com.xmall.bean.vo.CouponUserVO;
import com.xmall.bean.vo.CouponVO;

import java.util.List;
import java.util.Map;

public interface CouponService {
    Map<String, Object> queryList(Map<String, String> params);

    Coupon createCoupon(Coupon coupon);

    Coupon selectById(Integer id);

    Coupon updateCoupon(Coupon update);

    void deleteCoupon(Coupon delete);

    Map<String, Object> queryListUser(Map<String, String> params);

    /**
     * 微信小程序商城优惠券列表
     * @param page
     * @param size
     * @return
     */
    CouponVO<CouponMallVO> listMallCoupon(Integer page, Integer size);

    /**
     * 微信小程序用户下单时可选优惠券列表
     * @param page 当前页
     * @param size 分页大小
     * @param status 优惠券使用状态（使用状态, 如果是0则未使用；如果是1则已使用；如果是2则已过期；如果是3则已经下架；）
     * @return
     */
    CouponVO<CouponUserVO> listUserCoupon(Integer page, Integer size, Short status);

    /**
     * 微信小程序获取用户优惠券列表
     * @param cartId 购物车id
     * @param grouponRulesId 团购规则id
     * @return
     */
    List<CouponUserVO> listSelectiveCoupon(Integer cartId, Integer grouponRulesId);

    /**
     * 领取优惠券
     * @param map
     * @return
     */
    BaseCouponRespVO receiveCoupon(Map<String, Integer> map);

    /**
     * 优惠码兑换成优惠券，并插入到cskaoyanmall_coupon_user（用户优惠券表）中
     * @param map 包含优惠码
     * @return
     */
    BaseCouponRespVO exchangeCoupon(Map<String, String> map);

}
